﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace QuanLyKhachSan
{
    public partial class FmHoaDonNhieuPhong : Form
    {
        PhongBUS bus = new PhongBUS();
        public FmHoaDonNhieuPhong()
        {
            InitializeComponent();
        }

        private void FmHoaDonNhieuPhong_Load(object sender, EventArgs e)
        {
            HoaDonBUS bus = new HoaDonBUS();
            txtMaHD.Text = (bus.LayMaxHoaDon() + 1).ToString();
            LoadLoaiKH(cbgTenPhong);
            
        }
        public void LoadLoaiKH(DataGridViewComboBoxColumn cmb)
        {

            cmb.DataSource = bus.LayDanhSachPhongTheoTinhTrang(2);
            cmb.DisplayMember = "TenPhong";
            cmb.ValueMember = "MaPhong";
            
    

        }
        System.Collections.ArrayList arrListIDs = new System.Collections.ArrayList();
        private void gidThanhToan_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != 1 || e.RowIndex < 0)
            {
                return;
            }
          
            PhieuThueBUS bus = new PhieuThueBUS();
            int maphong;
            if (gidThanhToan.Rows[e.RowIndex].Cells["cbgTenPhong"].Value != null)
            {
                maphong = Int32.Parse(gidThanhToan.Rows[e.RowIndex].Cells["cbgTenPhong"].Value.ToString());
            }
            else
                return;
            if (!arrListIDs.Contains(maphong)&& gidThanhToan.Rows[e.RowIndex].Cells["cbgTenPhong"].Value != null )
            {
                arrListIDs.Add(maphong);
                //do ur code



                PhieuThueChiTietDTO dto = bus.GetInfoChuaThanhToan(maphong, 2);
                //THONGTINPHIEUTHUEPHONG thongtinchitietphieuthue = PhieuThuePhongDAO.ThongTinChiTietPhieuThuePhongConHieuLuc(maPhong);
                if (dto == null)
                {
                    gidThanhToan.Rows[e.RowIndex].Tag = null;
                    gidThanhToan.Rows[e.RowIndex].Cells[1].Value = "";
                    gidThanhToan.Rows[e.RowIndex].Cells[3].Value = "";
                    gidThanhToan.Rows[e.RowIndex].Cells[4].Value = "";
                    gidThanhToan.Rows[e.RowIndex].Cells[5].Value = "";
                    gidThanhToan.Rows[e.RowIndex].Cells[6].Value = "";
                    gidThanhToan.Rows[e.RowIndex].Cells[7].Value = "";
                }
                PhieuThueChiTietBUS XLCT = new PhieuThueChiTietBUS();

                gidThanhToan.Rows[e.RowIndex].Tag = null;
                gidThanhToan.Rows[e.RowIndex].Cells[0].Value = dto.Maphong;
                gidThanhToan.Rows[e.RowIndex].Cells[2].Value = dto.Gia;
                int songay = ((TimeSpan)(DateTime.Now - dto.Ngaythue)).Days;
                gidThanhToan.Rows[e.RowIndex].Cells[3].Value = songay;

                gidThanhToan.Rows[e.RowIndex].Cells[4].Value = dto.Ngaythue;
                gidThanhToan.Rows[e.RowIndex].Cells[5].Value = dto.Soluongkhach;

               int thanhtien = XLCT.TinhTienPhong(dto);
               gidThanhToan.Rows[e.RowIndex].Cells[6].Value = thanhtien;

                //dgvLapHoaDonThanhToan.Rows[e.RowIndex].Cells[7].Value = thongtinchitietphieuthue.SoLuongKhach;
                HoaDonChiTietDTO Hoadonct  = new HoaDonChiTietDTO();
                Hoadonct.Macthd = -1;
                Hoadonct.Maphieu = dto.Maphieu;
                Hoadonct.Mahd = Int32.Parse(txtMaHD.Text);
                Hoadonct.Maphong = dto.Maphong;
                Hoadonct.Dongia = dto.Gia;
                Hoadonct.Songay = songay;
                Hoadonct.Thanhtien = thanhtien;
                string ngayvao = dto.Ngaythue.ToString();
                string ngayra = datelapphieu.Value.ToString();


                Hoadonct.Ngavao = DateTime.Parse(ngayvao);
                Hoadonct.Ngayra = DateTime.Parse(ngayra);
                gidThanhToan.Rows[e.RowIndex].Tag = Hoadonct;
              
                int trigia = 0;
                for (int i = 0; i < gidThanhToan.Rows.Count - 1; i++)
                {
                    if (gidThanhToan.Rows[i].Tag != null)
                    {
                        trigia = trigia + ((HoaDonChiTietDTO)gidThanhToan.Rows[i].Tag).Thanhtien;
                    }
                }
                txtTongTien.Text = trigia.ToString();
            
            
            }
            else
            {
                MessageBox.Show("Phòng này đã chọn rồi");
                
                
            }
        }

        private void btnThanhToan_Click(object sender, EventArgs e)
        {
            HoaDonDTO dto = new HoaDonDTO();
            if (txtTenKhachHang.Text == "")
            {
                MessageBox.Show("Vui lòng nhập tên khách hàng");
                return;
            }
            dto.Tenkh = txtTenKhachHang.Text;
            dto.Diachikh = txtDiaChi.Text;
            dto.Mahd = int.Parse(txtMaHD.Text.ToString());
            dto.Ngaylap = datelapphieu.Value;
            int trigia = int.Parse(txtTongTien.Text.ToString());
            dto.Thanhtien = trigia;
            // lập danh sách phiếu thanh toán
            List<HoaDonChiTietDTO> ChiTiet = new List<HoaDonChiTietDTO>();
            if ((gidThanhToan.Rows.Count - 1) == 0)
            {
                MessageBox.Show("Chưa Nhập Chi Tiết Các Phòng Cần Thanh Toán!");
                return;
            }
            for (int index = 0; index < gidThanhToan.Rows.Count - 1; index++)
            {
                if (gidThanhToan.Rows[index].Tag == null)
                {
                    MessageBox.Show("Dòng thứ " + (index + 1) + " chưa hợp lệ! Bạn có thể xóa dòng đó!!");
                    return;
                }
                ChiTiet.Add(((HoaDonChiTietDTO)gidThanhToan.Rows[index].Tag));

            }
            //lưu vào csdl
            HoaDonChiTietBUS bus = new HoaDonChiTietBUS();
            bus.THemChiTIetHoaDon(ChiTiet, dto.Mahd);
  
            MessageBox.Show("Lập Hóa Đơn Thành Công!");
        }
          
            
     
        
    }
}
